import { once, on } from '@/utils/index';

export default {
	bind(el, binding, vnode) {
		let interval = null;
		let startTime = 0;
		const handler = () => vnode.context[binding.expression]?.apply?.();
		const clear = () => {
			if (Date.now() - startTime < 100) {
				handler();
			}
			clearInterval(interval);
			interval = null;
		};

		on(el, 'mousedown', (e) => {
			if (e.button !== 0) return;
			startTime = Date.now();
			once(document, 'mouseup', clear);
			clearInterval(interval);
			interval = setInterval(handler, 100);
		});
	}
};
